<?php
namespace Admin\Controller;
use Think\Controller;
class AdminController extends CommonController {
     
     //浏览管理员信息
    public function index(){
       
       //实例化管理员信息操作对象
       $mod = M("admin_view as admin");
       //判断是否有关键字传值
       if($key = I('get.key'))
       {
          $map['admin_name'] = array('like','%'.$key.'%');
       }
       //判断是否有时间值传递
       if(I('get.start') && I('get.end'))
       {
          
          $start = strtotime(I('get.start')." 00:00:00");
          $end = strtotime(I('get.end')." 23:59:59");

          $map['addtime'] = array(array('EGT',$start),array('ELT',$end),'AND');
          
       }
       //判断是否有分类值传递
       if($character_id = (int)I('get.character_id'))
       {
          $map['character_id'] = array('EQ',$character_id);
       }
      
       $count = $mod->where($map)->count();// 查询满足要求的总记录数
       
       $Page = new \Think\Page($count,10);// 实例化分页类 传入总记录数和每页显示的记录数(25)

       $Page -> setConfig('header','共%TOTAL_ROW%条');
       $Page -> setConfig('first','首页');
       $Page -> setConfig('last','共%TOTAL_PAGE%页');
       $Page -> setConfig('prev','上一页');
       $Page -> setConfig('next','下一页');
       $Page -> setConfig('link','indexpagenumb');//pagenumb 会替换成页码
       $Page -> setConfig('theme','%HEADER% %FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END%');
       
       $show = $Page->show();// 分页显示输出
       // 进行分页数据查询 注意limit方法的参数要使用Page类的属性
       $list=$mod->join('`character` c ON admin.character_id=c.id')->field("admin.*,c.character")->order('admin.addtime desc')->limit($Page->firstRow.','.$Page->listRows)->where($map)->select();

       //放置模板中
       
       $this->assign("list",$list);
       $this->assign('page',$show);// 赋值分页输出
       //查询分类
        $mod = M('character');
        $character = $mod -> select();
        $this -> assign('character',$character);
       //加载模板输出
       $this->display("index");
    }

    //加载添加表单
    public function add(){
        $mod = M('character');
        $character = $mod -> select();
        $this -> assign('character',$character);
       $this->display("add"); 
    }

    //执行信息添加
    public function insert(){
        //实例化
        $mod = M("admin");
        //自动验证
        $rules = array(
              
         array('admin_name','/\S+/','管理员内容必须填写！',1,'regex',1),// // 验证是否为空或者空格回车
         array('phone','/\S+/','管理员名称必须填写！',1,'regex',1),
         array('admin_name','','管理员名称已经存在！',1,'unique',1), // 验证管理员名称是否已经存在
         array('email','/\S+/','管理员关键字必须填写！',1,'regex',1),
         array('abs','/\S+/','备注必须填写！',1,'regex',1),
         array('password2','password','确认密码和密码不一致',0,'confirm'), // 验证确认密码是否和密码一致
         array('password','checkPwd','密码格式不正确',0,'function'), // 自定义函数验证密码格式 
        );  
       

        // var_dump(!$mod->validate($rules)->create());die;
        if (!$mod->validate($rules)->create()){
             // 如果创建失败 表示验证没有通过 输出错误提示信息
             $this->error($mod->getError());
        }

        $mod->password = md5(I('post.password'));

        //获取添加时间
        $mod->addtime = time();
        //执行添加
        $m = $mod->add();
        //判断并输出对应的提示信息
        if($m>0){
           $this->success("添加成功！",U("Admin/add"));
        }else{
           $this->error("添加失败！");
        }
    }

    //加载编辑表单
    public function edit(){

        //获取要编辑的信息
        $mod = M('character');
        $character = $mod -> select();
        $this -> assign('character',$character);

        $mod =M("admin_view"); 
        $ob = $mod->find((int)I('get.id'));

        //放置模板中
        $this->assign("v",$ob);
        //加载编辑模板
        $this->display("edit");
    }

        //加载密码编辑表单
    public function pass(){


        $mod =M("admin"); 
        $ob = $mod->field('id,admin_name')->find((int)I('get.id'));

        //放置模板中
        $this->assign("v",$ob);
        //加载编辑模板
        $this->display("pass");
    }

    //执行信息修改
    public function update(){
        //实例化
        $mod =M("admin");
        //自动验证
        $rules = array(
          array('phone','/\S+/','管理员电话必须填写！',1,'regex',2),
          array('abs','/\S+/','备注必须填写！',1,'regex',2),
          array('email','/\S+/','管理员关键字必须填写！',1,'regex',2),
          array('password2','password','确认密码和密码不一致',0,'confirm'), // 验证确认密码是否和密码一致
          array('password','checkPwd','密码格式不正确',0,'function'), // 自定义函数验证密码格式      
        );  
       

        // var_dump(!$mod->validate($rules)->create());die;
        if (!$mod->validate($rules)->create()){
             // 如果创建失败 表示验证没有通过 输出错误提示信息
             $this->error($mod->getError());
        }
        //判断是否输入了密码修改
        if(I('post.password') && I('post.password2'))
        {
          $mod->password = md5(I('post.password'));
        }
        
        //执行修改
        $m = $mod->save();
        //判断并输出对应的提示信息
        if($m!==false){
            $this->success("修改成功！",U("Admin/index"));
        }else{
           $this->error("修改失败！");
        }
    }

      //执行密码修改
    public function passupdate(){
        //实例化
        $mod =M("admin");
        //自动验证
        $rules = array(
          array('oldpassword','/\S+/','旧密码必须填写！',1,'regex',2),
          array('password','/\S+/','密码必须填写！',1,'regex',2),
          array('password2','/\S+/','确认密码必须填写！',1,'regex',2),
          array('password2','password','确认密码和密码不一致',0,'confirm'), // 验证确认密码是否和密码一致
          array('password','checkPwd','密码格式不正确',0,'function'), // 自定义函数验证密码格式      
        );  
       
        //验证密码
        if(md5(I('post.oldpassword')) !== $mod->getFieldById((int)I('post.id'),'password'))
        {
          $this->error('原始密码不正确!');
        }
        // var_dump(!$mod->validate($rules)->create());die;
        if (!$mod->validate($rules)->create()){
             // 如果创建失败 表示验证没有通过 输出错误提示信息
             $this->error($mod->getError());
        }
        //判断是否输入了密码修改
        if(I('post.password') && I('post.password2'))
        {
          $mod->password = md5(I('post.password'));
        }
        
        //执行修改
        $m = $mod->save();
        //判断并输出对应的提示信息
        if($m!==false){

            echo json_encode(true);
           
        }else{
           echo json_encode(false);
        }
    }
    

    //执行信息删除
    public function del(){
       //实例化
       $mod =M("admin");
       //把传过来的字符串整理成搜索条件
       
       if(I('post.id'))
       {
          $arr = explode(',',I('post.id'));
          array_pop($arr);

          $map['id'] = array('in',$arr);

          //执行删除
           $m = $mod->where($map)->delete();
           
           //判断并输出对应的提示信息
           if($m>0){
               
               $this->success("删除成功！",U("Admin/index"));
           }else{
                
               $this->error("删除失败！");
           }
       }
       else
       {
            if((int)I('get.id'))
           {
                  $map['id'] = array('EQ',(int)I('get.id'));
                // echo json_encode(true);
           }
           // dump($map);die;
           //执行删除
           $m = $mod->where($map)->delete();
           
           //判断并输出对应的提示信息
           if($m>0){
                echo json_encode(true);
              
           }else{
                echo json_encode(false);
               
           }
       }
       
    }

    //启用禁用
    public function toggle()
    {   
        $mod = M('admin');
        //判断禁用还是启用
        switch (I('get.what')) {
            case 'disabled':
                $m = $mod->where('id='.(int)I('get.id'))->setField('status',0);
                if($m)
                {
                    echo json_encode(true);
                    break;
                }else{
                    echo json_encode(false);
                    break;
                }
                
            case 'enabled':
                $m = $mod->where('id='.(int)I('get.id'))->setField('status',1);
                if($m)
                {
                    echo json_encode(true);
                    break;
                }else{
                    echo json_encode(false);
                    break;
                }
    
        }
    }
}